Les requêtes booléenne sont parmis les plus utilisé car elles permettent d'aggréger beaucoup de requête/filtre simple dans une grosse et complexe requête.
Une requête booléenne prend en compte 3 closes :
Clause | Explication |
---|---|
must | Les clause must doivent être vérifiés pour avoir le résultat. |
should | Les clause qui devraient être vérifiées dans les résultats. On peut appliquer un paramètre minimum_number_should_match pour indiquer le nombre de should qui devront être vérifiés |
must_not | La clause qui ne doit PAS apparaitre dans les résultats de la requête |
Donner moi les entités venant de Bordeaux, dont le nom pourrait être micmac ou phase et dont l'adresse mail n'est surement pas une wanadoo !
{
"query": {
"bool" : {
"should": [
{
"term":{
"nom":"micmac"
}
},
{
"term":{
"nom":"phase"
}
}
],
"minimum_number_should_match":1,
"must": {
"term": {"ville":"bordeaux"}
},
"must_not": {
"prefix": {
"eml":"wanadoo"
}
}
}
}
}
Il existe l'équivalent en filtered mais il ne supporte pas le minimum_number_should_match.